package jp.co.showbiz.common.util;

import java.io.InputStream;
import java.io.Reader;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.StringTokenizer;

/**
 * ConvertUtil
 */
public class ConvertUtil {

	public ConvertUtil() {
	}

	public static String changeEmojiDtoS(final String do_txt) {

		String sb_txt = do_txt;

		String[] do_emoji = new String[] { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "" };

//		String[] do_emoji_u = new String[] { "e63e", "e63f", "e640", "e641", "e642", "e643", "e644", "e645", "e646", "e647",
//				"e648", "e649", "e64a", "e64b", "e64c", "e64d", "e64e", "e64f", "e650", "e651", "e652", "e653", "e654", "e655",
//				"e656", "e657", "e658", "e659", "e65a", "e65b", "e65c", "e65d", "e65e", "e65f", "e660", "e661", "e662", "e663",
//				"e664", "e665", "e666", "e667", "e668", "e669", "e66a", "e66b", "e66c", "e66d", "e66e", "e66f", "e670", "e671",
//				"e672", "e673", "e674", "e675", "e676", "e677", "e678", "e679", "e67a", "e67b", "e67c", "e67d", "e67e", "e67f",
//				"e680", "e681", "e682", "e683", "e684", "e685", "e686", "e687", "e688", "e689", "e68a", "e68b", "e68c", "e68d",
//				"e68e", "e68f", "e690", "e691", "e692", "e693", "e694", "e695", "e696", "e697", "e698", "e699", "e69a", "e69b",
//				"e69c", "e69d", "e69e", "e69f", "e6a0", "e6a1", "e6a2", "e6a3", "e6a4", "e6a5", "e6ce", "e6cf", "e6d0", "e6d1",
//				"e6d2", "e6d3", "e6d4", "e6d5", "e6d6", "e6d7", "e6d8", "e6d9", "e6da", "e6db", "e6dc", "e6dd", "e6de", "e6df",
//				"e6e0", "e6e1", "e6e2", "e6e3", "e6e4", "e6e5", "e6e6", "e6e7", "e6e8", "e6e9", "e6ea", "e6eb", "e70b", "e6ec",
//				"e6ed", "e6ee", "e6ef", "e6f0", "e6f1", "e6f2", "e6f3", "e6f4", "e6f5", "e6f6", "e6f7", "e6f8", "e6f9", "e6fa",
//				"e6fb", "e6fc", "e6fd", "e6fe", "e6ff", "e700", "e701", "e702", "e703", "e704", "e705", "e706", "e707", "e708",
//				"e709", "e70a", "e6ac", "e6ad", "e6ae", "e6b1", "e6b2", "e6b3", "e6b7", "e6b8", "e6b9", "e6ba", "e70c", "e70d",
//				"e70e", "e70f", "e710", "e711", "e712", "e713", "e714", "e715", "e716", "e717", "e718", "e719", "e71a", "e71b",
//				"e71c", "e71d", "e71e", "e71f", "e720", "e721", "e722", "e723", "e724", "e725", "e726", "e727", "e728", "e729",
//				"e72a", "e72b", "e72c", "e72d", "e72e", "e72f", "e730", "e731", "e732", "e733", "e734", "e735", "e736", "e737",
//				"e738", "e739", "e73a", "e73b", "e73c", "e73d", "e73e", "e73f", "e740", "e741", "e742", "e743", "e744", "e745",
//				"e746", "e747", "e748", "e749", "e74a", "e74b", "e74c", "e74d", "e74e", "e74f", "e750", "e751", "e752", "e753",
//				"e754", "e755", "e756", "e757" };

		String[] sb_emoji = new String[] { "$Gj", "$Gi", "$Gk", "$Gh", "$E]", "$Pc", "$P\\", "$P\\", "$F_",
				"$F`", "$Fa", "$Fb", "$Fc", "$Fd", "$Fe", "$Ff", "$Fg", "$Fh", "$Fi", "$Fj", "$G6",
				"$G6", "$G4", "$G5", "$G8", "$G3", "$PJ", "$ER", "$G*", "$G>", "$PT", "$PU", "$G;",
				"$PN", "$Ey", "$F\"", "$G=", "$GV", "$GX", "$Es", "$Eu", "$Em", "$Et", "$Ex", "$Ev",
				"$GZ", "$Eo", "$En", "$Eq", "$Gc", "$Ge", "$Gd", "$Gg", "$E@", "$E^", "$O3", "$G\\",
				"$G]", "$FV", "$G:", "$O*", "$Q\"", "$Q#", "$G(", "$EE", "$O.", "$F(", "$G(", "$OC",
				"$Eh", "$O4", "$E2", "$Ok", "$G)", "$G*", "$O!", "$EJ", "$F.", "$EF", "$F,", "$F.",
				"$F-", "$F/", "$P9", "$P;", "$G0", "$G1", "$G2", "$FX", "$FW", "$QV", "$G'", "$P9",
				"$F*", "$Gl", "$Gl", "$Gl", "$Gl", "$Gl", "$Gr", "$Go", "$G<", "$GS", "$FY", "$OD",
				"$EO", "$O!", "$Gw", "$E?", "$Pk", "$F9", "$F:", "$F;", "$GM", "$E$", "$E#", "$G+",
				"$G*", "$G*", "$E#", "$E4", "$E4", "$EO", "$Fm", "$FI", "$G_", "$FW", "$E4", "$E4",
				"$F2", "$E4", "$F1", "$F0", "$F0", "$F<", "$F=", "$F>", "$F?", "$F@", "$FA", "$FB",
				"$FC", "$FD", "$FE", "$OG", "$GB", "$GC", "$OG", "$Gw", "$Gy", "$Gx", "$P'", "$P&",
				"$FV", "$G^", "$EC", "$ON", "$G#", "$ON", "$E/", "$OT", "$G-", "$O1", "$OF", "$FX",
				"$E\\", "$GA", "$GA", "$GA", "$GA", "$OQ", "$OQ", "$OP", "$FV", "$FV", "$Fm", "$E/",
				"$E/", "$G&", "$EO", "$O<", "$G&", "$G3", "$OE", "$GV", "$EO", "$G,", "$E#", "$O3",
				"$O!", "$E.", "$GT", "$GM", "$EV", "$OX", "$GM", "$P#", "$P*", "$P5", "$E(", "$P6",
				"$P.", "$E&", "$G.", "$E%", "$P%", "$P*", "$P&", "$P\"", "$P1", "$P3", "$Fr", "$O!",
				"$Fn", "$QW", "$E5", "$O5", "$Fo", "$Fo", "$Fr", "$Fr", "$FK", "$Fm", "$FJ", "$FW",
				"$FW", "$Ew", "$P^", "$G[", "$E0", "$E0", "$O$", "$Oe", "$Oe", "$E0", "$E8", "$GP",
				"$Ob", "$Gf", "$O+", "$O`", "$OY", "$QC", "$QC", "$Gu", "$G9", "$Gv", "$P$", "$G:",
				"$E+", "$Gd", "$P+" };

		try {
			for (int i = 0; i < 252; i++) {
				sb_txt = sb_txt.replace(do_emoji[i], sb_emoji[i]);
			}
		} catch (Exception e) {
			return do_txt;
		}

		return sb_txt;
	}

	public static String changeEmojiDtoK(final String do_txt) {

		String sb_txt = do_txt;

		String[] do_emoji = new String[] { "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
				"", "", "", "", "", "", "", "", "", "", "", "", "", "", "" };
		String[] sb_emoji = new String[] { "44", "107", "95", "191", "16", "190", "305", "481", "192", "193", "194", "195",
				"196", "197", "198", "199", "200", "201", "202", "203", "45", "45", "306", "220", "219", "421", "307", "222",
				"308", "172", "341", "217", "125", "125", "216", "379", "168", "112", "156", "375", "376", "212", "205", "378",
				"206", "213", "208", "99", "207", "146", "93", "52", "65", "245", "124", "104", "289", "110", "70", "248", "294",
				"309", "494", "311", "106", "176", "177", "94", "83", "122", "312", "144", "313", "85", "161", "395", "288",
				"232", "300", "414", "314", "315", "316", "317", "318", "817", "319", "320", "43", "42", "728", "729", "116",
				"178", "321", "322", "323", "15", "15", "134", "251", "169", "234", "71", "226", "233", "508", "257", "178",
				"490", "58", "326", "268", "46", "513", "784", "166", "161", "161", "108", "119", "119", "109", "299", "385",
				"120", "118", "324", "119", "334", "730", "818", "818", "4", "180", "181", "182", "183", "184", "185", "186",
				"187", "188", "325", "326", "51", "803", "265", "266", "257", "258", "441", "444", "327", "731", "343", "224",
				"420", "273", "420", "77", "262", "281", "268", "291", "732", "261", "2", "733", "734", "329", "330", "263",
				"282", "735", "735", "77", "77", "335", "290", "295", "805", "221", "48", "112", "233", "337", "806", "152",
				"149", "354", "72", "58", "215", "423", "25", "441", "446", "257", "351", "779", "450", "349", "287", "264",
				"348", "446", "443", "440", "259", "791", "1", "143", "81", "54", "218", "279", "807", "82", "1", "1", "387",
				"326", "386", "808", "809", "377", "810", "342", "53", "241", "113", "739", "434", "811", "133", "235", "244",
				"239", "400", "333", "424", "812", "78", "252", "203", "454", "814", "248", "254", "12", "350" };

		try {
			for (int i = 0; i < 252; i++) {
				sb_txt = sb_txt.replace(do_emoji[i], "<img localsrc=\"" + sb_emoji[i] + "\">");
			}
		} catch (Exception e) {
			return do_txt;
		}

		return sb_txt;
	}

	/**
	 * ex) TB_USER_INFO >> TbUserInfo
	 * 
	 * @return String
	 * @param oldStr
	 */
	public static String convertString(String oldStr) {

		String[] arrColName = (oldStr.toLowerCase()).split("_");
		String strRtVal = "";

		if (oldStr.length() > 0)
			strRtVal = arrColName[0];

		for (int i = 1; i < arrColName.length; i++) {
			strRtVal = strRtVal + (arrColName[i].substring(0, 1)).toUpperCase() + arrColName[i].substring(1);
		}
		return strRtVal;
	}

	/**
	 * Null -> String
	 * 
	 * @return String
	 * @param str
	 */
	public static String NullToStr(String str) {
		return (str == null ? "" : str.trim());
	}

	/**
	 * Null -> N
	 * 
	 * @return String
	 * @param str
	 */
	public static String NullToN(String str) {
		return (str == null ? "N" : str.trim());
	}

	/**
	 * @return String
	 * @param obj
	 *            Object
	 */
	public static String NullToStr(Object obj) {
		return (obj == null ? "" : obj.toString().trim());
	}

	public static String ReplaceScriptEscapeStr(Object obj) {
		return (obj == null ? "" : obj.toString().replace("'", "\\'").trim());
	}

	public static String ReplaceEscapeStr(Object obj) {
		return (obj == null ? "" : obj.toString().replace("'", "''").trim());
	}

	public static String ReplaceEscapeStrLike(Object obj) {
		return (obj == null ? "" : obj.toString().replace("'", "''").replace("%", "[%]").replace("_", "[_]").trim());
	}

	public static String ReplaceEscapeStrFTS(Object obj) {
		return (obj == null ? "" : obj.toString().replace("'", "''").replace("　", " ").trim());
	}

	/**
	 * byte[]ｸｦ ｹｮﾀﾚｿｭｷﾎ ｺｯﾈｯ, nullﾀｺ ｰ・
	 * 
	 * @return String
	 * @param obj
	 *            byte[]
	 */
	public static String NullToStr(byte[] arrObj) {
		try {
			return (arrObj == null ? "" : new String(arrObj, "MS949"));
		} catch (Exception e) {
			return "";
		}
	}

	/**
	 * Null -> 0
	 * 
	 * @return String
	 * @param str
	 */
	public static String NullToZero(String str) {
		return (str == null ? "0" : str);
	}

	/**
	 * Null, "" -> 0
	 * 
	 * @return String
	 * @param str
	 */
	public static String NullToZero2(String str) {
		return (str == null || str.trim().equals("") ? "0" : str);
	}

	/**
	 * Null -> "&nbsp;"
	 * 
	 * @return String
	 * @param str
	 */
	public static String NullToBlank(String str) {
		return (str == null || str.length() == 0 ? "&nbsp;" : str);
	}

	/**
	 * null -> "null"
	 * 
	 * @return String
	 * @param str
	 */
	public static String BlankToNull(String str) {
		return (str == null || str.length() == 0 ? "null" : str);
	}

	/**
	 * blank -> "null"
	 * 
	 * @return String
	 * @param int str
	 */
	public static String BlankToNull(int str) {
		String temp = str + "";
		return (temp == null || temp.length() == 0 ? "null" : temp);
	}

	/**
	 * null -> rep
	 * 
	 * @return String
	 * @param String
	 *            rep(replace ｴ・・
	 * @param String
	 *            str
	 */
	public static String NullToStr(String str, String rep) {
		return (str == null ? rep : str);
	}

	/**
	 * null || "" -> rep
	 * 
	 * @return String
	 * @param rep
	 * @param str
	 */
	public static String NullToStr2(String str, String rep) {
		return ((str == null || str.trim().equals("")) ? rep : str);
	}

	/**
	 * null -> 0 else int(str)
	 * 
	 * @return int
	 * @param str
	 */
	public static int NulltoInt(String str) {
		return (str == null || str.length() == 0 ? 0 : Integer.parseInt(str));
	}

	/**
	 * null -> 0 else double(str)
	 * 
	 * @return Double
	 * @param str
	 */
	public static double NulltoDouble(String str) {
		return (str == null || str.length() == 0 ? 0 : Double.parseDouble(str));
	}

	/**
	 * ﾀﾔｷﾂｹﾞﾀｺ InputStreamﾀﾌ nullﾀﾎﾁ・ﾃｼﾅｩﾇﾑｴﾙ.
	 * 
	 * @return Object
	 * @param is
	 */
	public static Object NullToObj(InputStream is) {
		Object obj = null;

		if (is == null)
			obj = "error";
		else
			obj = is;

		return obj;
	}

	/**
	 *Reader(CharacterStream) -> Stringﾀｸｷﾎ ｺｯﾈｯ
	 * 
	 * @param rd
	 *            Reader
	 *@return result
	 */
	public static String characterStreamToString(Reader rd) {
		char[] buffer = new char[1024];
		int length = 0;
		String str = "";

		try {
			while ((length = rd.read(buffer)) != -1) {
				for (int j = 0; j < length; j++) {
					str = str + buffer[j];
				}
			}
		} catch (Exception e) {

		}
		return str;
	}

	/**
	 * ﾀﾔｷﾂｹﾞﾀｺ ｹｮﾀﾚｿｭｿ｡ｼｭ ﾇﾘｴ・ｹｮﾀﾚｿｭﾀｻ ﾀﾔｷﾂｹﾞﾀｺ ｹｮﾀﾚｿｭｷﾎ ｹﾙｲ翆ﾘｴﾙ
	 * 
	 * @return String
	 * @param replace
	 * @param search
	 * @param s
	 */
	public static String ItemReplace(String s, String search, String replace) {
		StringBuffer s2 = new StringBuffer();
		int i = 0;
		int j = 0;
		int sl = search.length();

		while (j > -1) {
			j = s.indexOf(search, i);
			if (j > -1) {
				s2.append(s.substring(i, j) + replace);
				i = j + sl;
			}
		}
		s2.append(s.substring(i, s.length()));
		return s2.toString();
	}

	/**
	 * ｼﾀﾚ:ｿﾏｴﾂｱ貘ﾌｸｸｵ魍・ｾﾕｿ｡ 0ﾀｸｷﾎ ﾃ､ｿ鋗ﾙ)
	 * 
	 * @return String
	 * @param makeNum
	 * @param num
	 */
	public static String makeStr(int num, int makeNum) {
		String no = String.valueOf(makeNum);
		String rtVal = no;

		for (int i = 0; i < num - no.length(); i++) {
			rtVal = "0" + rtVal;
		}
		return rtVal;
	}

	/**
	 * ｼﾀﾚ:ｿﾏｴﾂｱ貘ﾌｸｸﾅｭ ｹｮﾀﾚｸｦ ｸｸｵ魍・ｵｿﾀﾏｹｮﾀﾚ) ｿｹ) *******
	 * 
	 * @return String
	 * @param makeChar
	 * @param num
	 */
	public static String makeCharStr(int num, String makeChar) {
		String rtVal = "";

		for (int i = 0; i < num; i++) {
			rtVal = rtVal + makeChar;
		}
		return rtVal;
	}

	/**
	 * ｼﾀﾚ:ｿﾏｴﾂｱ貘ﾌｸｸﾅｭ ｹｮﾀﾚｸｦ ｸｸｵ魍・ｵﾚｿ｡ ｰ鯊ｻ ﾃ､ｿ鋗ﾙ) ｿｹ) *******
	 * 
	 * @return String
	 * @param makeChar
	 * @param num
	 */
	public static String makeSpaceStr(int num, String makeChar) {
		String rtVal = "";
		if (!makeChar.equals("") || num != makeChar.trim().length()) {
			rtVal = makeChar.trim();
			for (int i = 0; i < (num - makeChar.trim().length()); i++) {
				rtVal = rtVal + " ";
			}
		} else {
			for (int i = 0; i < num; i++) {
				rtVal = rtVal + " ";
			}
		}
		return rtVal;
	}

	/**
	 * ｼﾀﾚ:ｿﾏｴﾂｱ貘ﾌｸｸﾅｭ ｱ簔ｸ ｹｮﾀﾚｿ｡ ﾀﾓﾀﾇﾀﾇ ｹｮﾀﾚｸｦ ｴﾘｼｭ ｸｸｵ魍・ｵﾚｿ｡ ﾀﾓﾀﾇﾀﾇ ｹｮﾀﾚｸｦ ｴﾑｴﾙ) ｿｹ) *******
	 * 
	 * @return String
	 * @param str
	 * @param makeChar
	 * @param num
	 */
	public static String makeInputStr(int num, String makeChar, String str) {
		String rtVal = "";
		if (!makeChar.equals("") || num != makeChar.trim().length()) {
			rtVal = makeChar.trim();
			for (int i = 0; i < (num - makeChar.trim().length()); i++) {
				rtVal = rtVal + str;
			}
		} else {
			if (makeChar.equals("")) {
				for (int i = 0; i < num; i++) {
					rtVal = rtVal + str;
				}
			} else {
				rtVal = makeChar.trim();
				for (int i = 0; i < num; i++) {
					rtVal = rtVal + str;
				}
			}
		}
		return rtVal;
	}

	/**
	 *ｹｮﾀﾚｿｭﾀｻ ｱ貘ﾌｸｸﾅｭ ｿﾀｸ･ﾂﾊ ｰ鯊ｸｷﾎ ﾃ､ｿ・ﾂ ﾇﾔｼ・
	 * 
	 * @param s
	 *            ｹｮﾀﾚｿｭ
	 *@param len
	 *            ｹｮﾀﾚｿｭﾀﾇ ﾃﾖｴ・ｱ貘ﾌ
	 *@return result : ﾃﾖｴ・貘ﾌｸｸﾅｭ ｿﾏｴﾂ ﾀｧﾄ｡ｿ｡ ｰ鯊ｻ ﾃ､ｿ・ｹｮﾀﾚｿｭ
	 */
	public static String formatString(String s, int len) {
		return formatString(s, len, true);
	}

	/**
	 *ｹｮﾀﾚｿｭﾀｻ ｱ貘ﾌｸｸﾅｭ ｰ鯊ｸｷﾎ ﾃ､ｿ・ﾂ ﾇﾔｼ・
	 * 
	 * @param s
	 *            ｹｮﾀﾚｿｭ
	 *@param len
	 *            ｹｮﾀﾚｿｭﾀﾇ ﾃﾖｴ・ｱ貘ﾌ
	 *@param rspace
	 *            ｰ鯊ｻ ﾃ､ｿ・ﾂ ﾀｧﾄ｡, true-ｿﾀｸ･ﾂﾊ false-ｿﾞﾂﾊ
	 *@return result ﾃﾖｴ・貘ﾌｸｸﾅｭ ｿﾏｴﾂ ﾀｧﾄ｡ｿ｡ ｰ鯊ｻ ﾃ､ｿ・ｹｮﾀﾚｿｭ
	 */
	public static String formatString(String s, int len, boolean rspace) {
		return formatString(s, len, rspace, "  ");
	}

	/**
	 *ｹｮﾀﾚｿｭﾀｻ ｱ貘ﾌｸｸﾅｭ ﾆｯﾁ､ｹｮﾀﾚｷﾎ ﾃ､ｿ・ﾂ ﾇﾔｼ・
	 * 
	 * @param s
	 *            ｹｮﾀﾚｿｭ
	 *@param len
	 *            ｹｮﾀﾚｿｭﾀﾇ ﾃﾖｴ・ｱ貘ﾌ
	 *@param rspace
	 *            ｰ鯊ｻ ﾃ､ｿ・ﾂ ﾀｧﾄ｡, true-ｿﾀｸ･ﾂﾊ false-ｿﾞﾂﾊ
	 *@param fillChar
	 *            ｹｮﾀﾚｿｭｱ貘ﾌｸｸﾅｭ ﾃ､ｿ・ｮﾀﾚ
	 *@return result ﾃﾖｴ・貘ﾌｸｸﾅｭ ｿﾏｴﾂ ﾀｧﾄ｡ｿ｡ ｰ鯊ｻ ﾃ､ｿ・ｹｮﾀﾚｿｭ
	 */
	public static String formatString(String s, int len, boolean right, String fillChar) {
		StringBuffer result = new StringBuffer();
		if (s.getBytes().length > len) {
			result.append(new String(s.getBytes(), 0, len));
		} else {
			if (right == true) {
				result.append(s);
				for (int i = 0; i < len - s.getBytes().length; i++)
					result.append(fillChar);
			} else {
				for (int i = 0; i < len - s.getBytes().length; i++)
					result.append(fillChar);
				result.append(s);
			}
		}
		return result.toString();
	}

	/**
	 * 'ｸｦ ''ｷﾎ ｺｯﾈｯ
	 * 
	 * @param original
	 *            String
	 * @return String
	 */
	public static String processQuotation(String original) {
		if (original == null)
			return null;
		else
			return replaceAll(original, "'", "''");
	}

	/**
	 * ｹｮﾀﾚｿｭｿ｡ｼｭ 'ｹﾗ "ﾀﾌ ﾀﾖﾀｻｰ豼・\ｸｦ ｺﾙﾀﾌｰ・ｹﾝﾈｯ
	 * 
	 * @param original
	 *            String
	 * @return String
	 */
	public static String processHtmlQuotation(String original) {
		if (original == null)
			return null;
		String retVal = "";
		for (int i = 0; i < original.length(); i++) {
			char c = original.charAt(i);
			Character cObj = new Character(c);
			Character sq = new Character('\'');
			Character dq = new Character('"');

			if (cObj.compareTo(sq) == 0) {
				Character reverse = new Character('\\');
				retVal += reverse.toString();
				retVal += sq;
			} else if (cObj.compareTo(dq) == 0) {
				Character reverse = new Character('\\');
				retVal += reverse.toString();
				retVal += dq;
			} else
				retVal += cObj.toString();
		}
		return retVal;
	}

	/**
	 * ｹｮﾀﾚｿｭorginalｿ｡ｼｭ ｹｮﾀﾚｿｭfindｸｦ ｹｮﾀﾚｿｭreplacementｷﾎ ﾄ｡ﾈｯ<br>
	 *<br>
	 * Replaces all the occurences of a substring found within a string by a<br>
	 * replacement string
	 * 
	 * @param original
	 *            the string in where the replace will take place
	 * @param find
	 *            the substring to find and replace
	 * @param replacement
	 *            the replacement string for all occurences of find
	 * @return the original string where all the occurences of find are replaced by replacement
	 */
	public static String replaceAll(String original, String find, String replacement) {
		StringBuffer buffer = new StringBuffer(original);
		return replaceAll(buffer, find, replacement).toString();
	}

	/**
	 * StringBuffer orginalｿ｡ｼｭ ｹｮﾀﾚｿｭfindｸｦ ｹｮﾀﾚｿｭreplacementｷﾎ ﾄ｡ﾈｯ<br>
	 *<br>
	 * Replaces all the occurences of a substring found<br>
	 * within a StringBuffer by a replacement string
	 * 
	 * @param buffer
	 *            the StringBuffer in where the replace will take place
	 * @param find
	 *            the substring to find and replace
	 * @param replacement
	 *            the replacement string for all occurences of find
	 * @return the original StringBuffer where all the occurences of find are replaced by replacement
	 */
	public static StringBuffer replaceAll(StringBuffer buffer, String find, String replacement) {
		int bufidx = buffer.length() - 1;
		int offset = find.length();

		while (bufidx > -1) {
			int findidx = offset - 1;
			while (findidx > -1) {
				if (bufidx == -1) {
					// Done
					return buffer;
				}
				if (buffer.charAt(bufidx) == find.charAt(findidx)) {
					findidx--; // Look for next char
					bufidx--;
				} else {
					findidx = offset - 1; // Start looking again
					bufidx--;
					if (bufidx == -1) {
						// Done
						return buffer;
					}
					continue;
				}
			}
			buffer.replace(bufidx + 1, bufidx + 1 + offset, replacement);
		}
		return buffer;
	}

	/**
	 * ｹｮﾀﾚｿｭ ｹ霑ｭﾀﾎ arrayﾀﾇ ｳｻｿ・ｻ separatorsｷﾎ ｱｸｺﾐﾇﾘｼｭ ﾇﾕﾄ｣ ｹｮﾀﾚｿｭｷﾎ ｹﾝﾈｯ.<br>
	 *<br>
	 * Takes an array of tokens and converts into separator-separated string.<br>
	 * 
	 * @param String
	 *            [] The array of strings input.
	 * @param String
	 *            The string separator.
	 * @return String A string containing tokens separated by seperator.
	 */
	public static final String arrayToString(String[] array, String separators) {
		StringBuffer sb = new StringBuffer("");
		String empty = "";

		if (array == null)
			return empty;

		if (separators == null)
			separators = ",";

		for (int ix = 0; ix < array.length; ix++) {
			if (array[ix] != null && !array[ix].equals("")) {
				sb.append(array[ix] + separators);
			}
		}
		String str = sb.toString();
		if (!str.equals(""))
			str = str.substring(0, (str.length() - separators.length()));

		return str;
	}

	/**
	 * ｹｮﾀﾚｿｭ strﾀｻ seperatorsｸｦ ｱ簔ﾘﾀｸｷﾎ ﾀﾚｸ･ ﾈﾄ String Arrayｿ｡ ｳﾖｰ・ｹﾝﾈｯ<br>
	 *<br>
	 * Converts a delimited string into an array of string tokens.<br>
	 * 
	 * @param String
	 *            [] The 'separator' separated string.
	 * @param String
	 *            The string separator.
	 * @return String A string array of the original tokens.
	 */
	public static final String[] stringToArray(String str, String separators) {
		StringTokenizer tokenizer;
		String[] array = null;
		int count = 0;

		if (str == null)
			return array;

		if (separators == null)
			separators = ",";

		tokenizer = new StringTokenizer(str, separators);
		if ((count = tokenizer.countTokens()) <= 0)
			return array;

		array = new String[count];
		int ix = 0;
		while (tokenizer.hasMoreTokens()) {
			array[ix] = tokenizer.nextToken();
			ix++;
		}

		return array;
	}

	/**
	 * ｹｮﾀﾚｿｭ dataｿ｡ｼｭ ｹｮﾀﾚｿｭ removeCharsｿ｡ ﾇﾘｴ酩ﾏｴﾂ ｳｻｿ・ｻ ｻ霖ｦ<br>
	 *<br>
	 * Remove a given set of characters from a String.<br>
	 * 
	 * @param String
	 *            The input string to be cleansed of 'removeChars'.
	 * @param String
	 *            The characters to be removed.
	 * @return String The new string cleansed of 'removeChars'.
	 */
	public static String removeChars(String data, String removeChars) {
		String temp = null;
		StringBuffer out = new StringBuffer();
		temp = data;

		StringTokenizer st = new StringTokenizer(temp, removeChars);
		while (st.hasMoreTokens()) {
			String element = (String) st.nextElement();
			out.append(element);
		}
		return out.toString();
	}

	/**
	 * ｹｮﾀﾚｿｭｿ｡ｼｭ ﾁﾂｿ・鮹ｦｰﾅ
	 * 
	 * @return
	 * @param str
	 */
	public static String trimString(String str) {
		if (null == str) {
			return null;
		}
		return str.trim();
	}

	/**
	 * ｹｮﾀﾚｿｭ strﾀﾇ ｱ貘ﾌｰ｡ pkLenｱ貘ﾌｿ｡ ｸﾚｶ・ｸｸﾅｭ strｿ｡ ｰ鮖ｮﾀﾚｸｦ ｴﾘｼｭ ｹﾝﾈｯ
	 * 
	 * @return
	 * @param pkLen
	 * @param str
	 */
	public static String fillPkString(String str, int pkLen) {
		if (str == null)
			return "";
		if (str.length() >= pkLen)
			return str;

		String temp = "";

		for (int i = 0; i < pkLen - str.length(); i++) {
			temp += " ";
		}
		return str + temp;
	}

	/**
	 * ｹｮﾀﾚｿｭ strﾀﾇ ｱ貘ﾌｰ｡ pkLenｱ貘ﾌｿ｡ ｸﾚｶ・ｸｸﾅｭ strｿ｡ 0ﾀｻ ｴﾘｼｭ ｹﾝﾈｯ
	 * 
	 * @return
	 * @param pkLen
	 * @param str
	 */
	public static String fillPkNumber(String str, int pkLen) {
		if (str == null)
			return "";
		if (str.length() >= pkLen)
			return str;

		String temp = "";

		for (int i = 0; i < pkLen - str.length(); i++) {
			temp += "0";
		}

		return temp + str;
	}

	public static Date parseDateStr(String str) {
		Calendar cal = Calendar.getInstance();
		str = str.trim();

		if (str.length() <= 0)
			return null;

		StringTokenizer st = new StringTokenizer(str, "-");
		int i = 0, year = 0, month = 0, date = 0, token = 0;

		while (st.hasMoreTokens()) {
			token = Integer.parseInt(st.nextToken());
			if (i == 0)
				year = token;
			else if (i == 1)
				month = token;
			else if (i == 2)
				date = token;
			i++;
			// System.out.println(token);
		}
		cal.set(year, month - 1, date);

		return new Date(cal.getTimeInMillis());
	}

	/**
	 * ｳｯﾂ･ 8ﾀﾚｸｮ -> 2005-11-10
	 * 
	 * @return String
	 * @param strInput
	 */
	public static String convertDate2Jcf(String strInput) {
		String dateJcf = "";

		if (strInput.length() != 8)
			return strInput;

		dateJcf = strInput.substring(0, 4) + "-" + strInput.substring(4, 6) + "-" + strInput.substring(6, 8);
		return dateJcf;
	}

	/**
	 * this is String -> List convertSex メッソド
	 * 
	 * @throws Exception
	 *             e
	 * @param paramListSex
	 *            リストー
	 * @version 1.0
	 * @return lisSex リストー
	 */
	@SuppressWarnings("unchecked")
	public static List convertSex(List paramListSex) throws Exception {

		String compareSex = "";
		List lisSex = new ArrayList();

		for (int i = 0; i < paramListSex.size(); i++) {
			compareSex = paramListSex.get(i).toString();
			if (compareSex.contains("M")) {
				lisSex.add("M");
			}
			if (compareSex.contains("F")) {
				lisSex.add("F");
			}
		}
		return lisSex;
	}

	/**
	 * this is String -> List convertBlood メッソド
	 * 
	 * @throws Exception
	 *             e
	 * @param paramListBlood
	 *            リストー
	 * @version 1.0
	 * @return lisBlood リストー
	 */
	@SuppressWarnings("unchecked")
	public static List convertBlood(List paramListBlood) throws Exception {

		String compareBlood = "";
		List lisBlood = new ArrayList();

		for (int i = 0; i < paramListBlood.size(); i++) {
			compareBlood = paramListBlood.get(i).toString();

			String[] arrBlood = compareBlood.split(",");
			for (int j = 0; j < arrBlood.length; j++) {
				arrBlood[j].trim();
				if (arrBlood[j].equals("[A")) {
					lisBlood.add("A");
				} else if (arrBlood[j].equals("A]")) {
					lisBlood.add("A");
				} else if (arrBlood[j].equals(" A]")) {
					lisBlood.add("A");
				} else if (arrBlood[j].equals(" A")) {
					lisBlood.add("A");
				} else if (arrBlood[j].equals("A")) {
					lisBlood.add("A");
				}
				if (arrBlood[j].equals("[B")) {
					lisBlood.add("B");
				} else if (arrBlood[j].equals("B]")) {
					lisBlood.add("B");
				} else if (arrBlood[j].equals(" B]")) {
					lisBlood.add("B");
				} else if (arrBlood[j].equals(" B")) {
					lisBlood.add("B");
				} else if (arrBlood[j].equals("B")) {
					lisBlood.add("B");
				}
				if (arrBlood[j].equals("[AB")) {
					lisBlood.add("AB");
				} else if (arrBlood[j].equals("AB]")) {
					lisBlood.add("AB");
				} else if (arrBlood[j].equals(" AB]")) {
					lisBlood.add("AB");
				} else if (arrBlood[j].equals(" AB")) {
					lisBlood.add("AB");
				} else if (arrBlood[j].equals("AB")) {
					lisBlood.add("AB");
				}
				if (arrBlood[j].equals("[O")) {
					lisBlood.add("O");
				} else if (arrBlood[j].equals("O]")) {
					lisBlood.add("O");
				} else if (arrBlood[j].equals(" O]")) {
					lisBlood.add("O");
				} else if (arrBlood[j].equals(" O")) {
					lisBlood.add("O");
				} else if (arrBlood[j].equals("O")) {
					lisBlood.add("O");
				}
				if (arrBlood[j].equals("[X")) {
					lisBlood.add("X");
				} else if (arrBlood[j].equals("X]")) {
					lisBlood.add("X");
				} else if (arrBlood[j].equals(" X]")) {
					lisBlood.add("X");
				} else if (arrBlood[j].equals(" X")) {
					lisBlood.add("X");
				} else if (arrBlood[j].equals("X")) {
					lisBlood.add("X");
				}
			}
		}
		return lisBlood;
	}

}
